Abstract
En este laboratorio usaremos información del Libro de Ordenes de Criptomonedas de diversos exchanges internacionales, con el objetivo primario de visualizar y modelar la microestructura del mercado por medio del comportamiento de Libro de Ordenes y sus caracteristicas como; Matching Engine, Levels, Ask-Bid Volumnes, etc.
In order to run this notebook, it is necessary to have installed and/or have the requirements.txt file with the following:
Se utilizaron los siguientes archivos para poder correr el siguiete notebook:
Por temas de funcionalidad se guardaron los diccionarios como archivos csv para poder manejar los datos, ya que tomaba 1 hora en obtener los datos de la librería.
files
%%capture
# Install all the pip packages in the requirements.txt
import sys
!{sys.executable} -m pip install -r requirements.txt
%%capture
import functions as fn
import data as dat
import main as mn
import pandas as pd
import visualizations as vn
En el contexto de los mercados financieros, el Libro de Ordenes (LO) es una herramienta fundamental para entender la microestructura del mercado. El LO muestra la oferta y la demanda de un activo financiero en tiempo real, lo que permite a los traders y analistas observar el comportamiento de los participantes del mercado y la evolución de los precios.
En este laboratorio, se utilizará la librería ccxt de Python para consultar información del LO de criptomonedas de diversos exchanges internacionales y extraer datos relevantes como el volumen de compra y venta, el spread y el precio promedio. El objetivo principal es visualizar y modelar la microestructura del mercado a través del comportamiento del LO y sus características, como el Matching Engine, los niveles y los volúmenes Ask-Bid.
Se espera obtener una serie de tiempo para el volumen Ask y Bid de cada timestamp del LO, así como el volumen total y el promedio de precios Mid-Price y VWAP para cada uno de los exchanges seleccionados. Además, se utilizará Plotly para visualizar y graficar los datos obtenidos para cada uno de los exchanges, lo que permitirá una mejor comprensión del comportamiento del mercado en cada uno de ellos.</font>
Exchange markets:
Monedas:
Los datos descargados son del libro de órdenes de 3 diferentes exchanges, se obtuvieron los datos históricos de 1 hora para cada moneda. A continuación de presentan el libro de ordenes de las dos monedas:
mn.btc
| exchange | datetime | ask_size | bid_size | spread | mid_price | vwap | levels | |
|---|---|---|---|---|---|---|---|---|
| 0 | bigone | 2023-04-25T03:20:29.631Z | 14.547764 | 8.440486 | 17841.82 | 27417.855 | 27470.6607 | 50 |
| 1 | bigone | 2023-04-25T03:20:31.015Z | 14.547764 | 8.440486 | 17841.78 | 27417.855 | 27470.6618 | 50 |
| 2 | bigone | 2023-04-25T03:20:32.410Z | 14.547764 | 8.440486 | 17841.70 | 27417.855 | 27470.6640 | 50 |
| 3 | bigone | 2023-04-25T03:20:33.798Z | 14.547764 | 8.440486 | 17841.66 | 27417.855 | 27470.6651 | 50 |
| 4 | bigone | 2023-04-25T03:20:35.190Z | 14.547764 | 8.440486 | 17841.62 | 27417.855 | 27470.6662 | 50 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 9161 | bitso | 2023-04-25T04:20:19.165Z | 10.723878 | 11.183684 | 38176.00 | 27382.000 | 27373.3815 | 50 |
| 9162 | bitso | 2023-04-25T04:20:21.300Z | 10.875841 | 11.183665 | 38652.00 | 27383.000 | 27381.2018 | 50 |
| 9163 | bitso | 2023-04-25T04:20:23.447Z | 10.634165 | 11.183665 | 35772.00 | 27384.000 | 27369.7020 | 50 |
| 9164 | bitso | 2023-04-25T04:20:25.576Z | 10.634165 | 11.176242 | 35158.00 | 27385.000 | 27369.8473 | 50 |
| 9165 | bitso | 2023-04-25T04:20:27.714Z | 10.634165 | 11.055496 | 35779.00 | 27386.000 | 27370.0004 | 50 |
9166 rows × 8 columns
vn.visualize_data(mn.btc,'levels')
vn.visualize_data(mn.btc,'ask_size')
vn.visualize_data(mn.btc,'bid_size')
vn.visualize_data(mn.btc,'mid_price')
vn.visualize_data(mn.btc,'vwap')
mn.eth
| exchange | datetime | ask_size | bid_size | spread | mid_price | vwap | levels | |
|---|---|---|---|---|---|---|---|---|
| 0 | bigone | 2023-04-25T05:17:02.051Z | 995.76417 | 340.63289 | 1768.16 | 1823.050 | 1840.4621 | 50 |
| 1 | bigone | 2023-04-25T05:17:03.416Z | 995.76417 | 340.63289 | 1768.16 | 1823.050 | 1840.4621 | 50 |
| 2 | bigone | 2023-04-25T05:17:04.784Z | 995.76417 | 340.63289 | 1768.16 | 1823.050 | 1840.4621 | 50 |
| 3 | bigone | 2023-04-25T05:17:06.156Z | 995.76417 | 340.63289 | 1768.16 | 1823.050 | 1840.4621 | 50 |
| 4 | bigone | 2023-04-25T05:17:07.515Z | 995.76417 | 340.63289 | 1768.16 | 1823.050 | 1840.4621 | 50 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 9047 | bitforex | 2023-04-25T06:16:50.378Z | 8.03350 | 8.15170 | 0.25 | 1829.755 | 1829.7540 | 5 |
| 9048 | bitforex | 2023-04-25T06:16:52.736Z | 9.38950 | 6.76800 | 0.25 | 1829.755 | 1829.7605 | 5 |
| 9049 | bitforex | 2023-04-25T06:16:55.009Z | 9.46060 | 8.75260 | 0.25 | 1829.755 | 1829.7552 | 5 |
| 9050 | bitforex | 2023-04-25T06:16:57.313Z | 6.23120 | 7.93060 | 0.25 | 1829.755 | 1829.7516 | 5 |
| 9051 | bitforex | 2023-04-25T06:16:59.682Z | 6.35020 | 8.64190 | 0.25 | 1829.755 | 1829.7516 | 5 |
9052 rows × 8 columns
vn.visualize_data(mn.eth,'levels')
vn.visualize_data(mn.eth,'ask_size')
vn.visualize_data(mn.eth,'bid_size')
vn.visualize_data(mn.eth,'mid_price')
vn.visualize_data(mn.eth,'vwap')
Para realizar el modelado de la estructura se calculó el Effective Spread utilizando el modelo propuesto por Roll.
\begin{equation} 2\sqrt{\vert COV(\bigtriangleup P_t,\bigtriangleup P_{t-1})}\vert \end{equation}mn.df_btc
| timestamp | Close | Spread | Effective Spread | |
|---|---|---|---|---|
| 62 | 2023-04-25 03:21:56.325000+00:00 | 27420.0 | 17867.33 | 0.544831 |
| 63 | 2023-04-25 03:21:57.723000+00:00 | 27420.0 | 17867.25 | 0.540489 |
| 64 | 2023-04-25 03:21:59.101000+00:00 | 27420.0 | 17867.21 | 0.53625 |
| 65 | 2023-04-25 03:22:00.515000+00:00 | 27420.0 | 17867.13 | 0.532109 |
| 66 | 2023-04-25 03:22:01.898000+00:00 | 27420.0 | 17867.09 | 0.528062 |
| ... | ... | ... | ... | ... |
| 9161 | 2023-04-25 04:20:19.165000+00:00 | 27382.0 | 38176.00 | 4.353743 |
| 9162 | 2023-04-25 04:20:21.300000+00:00 | 27383.0 | 38652.00 | 4.353555 |
| 9163 | 2023-04-25 04:20:23.447000+00:00 | 27384.0 | 35772.00 | 4.353368 |
| 9164 | 2023-04-25 04:20:25.576000+00:00 | 27385.0 | 35158.00 | 4.353181 |
| 9165 | 2023-04-25 04:20:27.714000+00:00 | 27386.0 | 35779.00 | 4.352994 |
9104 rows × 4 columns
mn.df_eth
| timestamp | Close | Spread | Effective Spread | |
|---|---|---|---|---|
| 62 | 2023-04-25 05:18:27.109000+00:00 | 1824.155 | 1776.26 | 0.337034 |
| 63 | 2023-04-25 05:18:28.478000+00:00 | 1824.155 | 1776.18 | 0.334336 |
| 64 | 2023-04-25 05:18:29.840000+00:00 | 1824.155 | 1776.02 | 0.3317 |
| 65 | 2023-04-25 05:18:31.214000+00:00 | 1824.155 | 1775.94 | 0.329127 |
| 66 | 2023-04-25 05:18:32.563000+00:00 | 1824.155 | 1775.86 | 0.326612 |
| ... | ... | ... | ... | ... |
| 9047 | 2023-04-25 06:16:50.378000+00:00 | 1829.755 | 0.25 | 4.834327 |
| 9048 | 2023-04-25 06:16:52.736000+00:00 | 1829.755 | 0.25 | 4.83406 |
| 9049 | 2023-04-25 06:16:55.009000+00:00 | 1829.755 | 0.25 | 4.833793 |
| 9050 | 2023-04-25 06:16:57.313000+00:00 | 1829.755 | 0.25 | 4.833526 |
| 9051 | 2023-04-25 06:16:59.682000+00:00 | 1829.755 | 0.25 | 4.833259 |
8990 rows × 4 columns
En este laboratorio se utilizó la librería ccxt de Python para consultar información del Libro de Órdenes de criptomonedas de diversos exchanges internacionales y se extrajeron las variables ask, ask-volume, bid, bid-volume y spread. A partir de estas variables se construyeron series de tiempo para ask-volume, bid-volume, total volume, mid-price y VWAP para cada timestamp del LO.
Los resultados obtenidos permiten observar cómo varían las diferentes variables a lo largo del tiempo y cómo afectan al precio. Además, se calculó el Effective Spread para cada timestamp del LO y se observa cómo varía a lo largo del tiempo.
En la serie de tiempo de ETH/USDT se puede observar que el Effective Spread se mantiene relativamente constante en los primeros registros y luego comienza a disminuir. Por otro lado, en la serie de tiempo de BTC/USDT se observa que el Effective Spread es más variable y en algunos casos llega a aumentar considerablemente.
En conclusión, la visualización y modelado de la microestructura del mercado a través del libro de órdenes y sus características es una herramienta útil para entender el comportamiento del mercado de criptomonedas y tomar decisiones informadas en la inversión en este tipo de activos.